home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
CRS
/
crs04.d81
/
dupfind.prg
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2009-10-10
|
3KB
|
121 lines
10 REM SAVE"@0:DUP FILE FIND",8
20 PRINT"[147]";:POKE53280,0:POKE53281,0
30 POKE53280,0:POKE53281,2
40 DIMD$(500),D1$(500),D(500),E(500)
50 DN=8
60 PRINT"[147] DUP ENTRY FIND:"
70 PRINT" THIS WILL READ THE DIRECTORIES OF TWO"
80 PRINT" DISKS AND SEARCH FOR DUPLICATE FILES"
90 PRINT" BETWEEN THE TWO DISKS. THIS IS USEFUL"
100 PRINT" IF YOU ARE LOOKING FOR FILES TO SCRATCH";
110 PRINT" TO MAKE MORE ROOM ON YOUR DISKS."
120 PRINT" FIRST DISK DEVICE (7-30) ? ";:I$="":L=2:GOSUB1130:DN=VAL(I$)
130 PRINT:PRINT" INSERT FIRST DISK INTO DRIVE 8 <RETURN>"
140 GETA$:IFA$<>CHR$(13)THEN140
150 GOSUB800
160 B1=BF:REM BLOCKS FREE, DISK 1
170 N1=X+1
180 FORF=0TON1
190 D1$(F)=D$(F):E(F)=D(F):D$(F)="":D(F)=0
200 NEXTF
210 N1=N1-2
220 PRINT"[147] SECOND DISK DEVICE (7-30) ? ";:I$="":L=2:GOSUB1130:DN=VAL(I$)
230 PRINT:PRINT" INSERT SECOND DISK IN DRIVE 8 <RETURN>"
240 GETA$:IFA$<>CHR$(13)THEN240
250 GOSUB800
260 N2=X-1
270 PR=1:REM DISK
280 PRINT"[147] OUTPUT TO PRINTER OR DISK OR BOTH (P/D/B) ?"
281 PRINT" NOTE: IF DISK IS CHOSEN, THE FILE WILL"
282 PRINT" BE NAMED "CHR$(34)"DUPLICATES"CHR$(34)", AND WILL BE"
283 PRINT" WRITTEN TO DEVICE 8."
290 GETA$:IFA$<>"P"ANDA$<>"D"ANDA$<>"B"THEN290
300 IFA$="P"THENPR=2
301 IFA$="B"THENPR=3
310 IFPR=1THEN340
320 PRINT"PLEASE TURN THE PRINTER ON <RETURN>"
330 GETA$:IFA$<>CHR$(13)THEN330
340 PRINT"[147] LOOKING FOR DUPLICATES:"
350 PRINT" FIRST DISK :"N1"FILES."
360 PRINT" SECOND DISK :"N2"FILES.":PRINT""
370 FORA1=1TON1
380 PRINT"[145] WORKING :"A1
390 FORA2=1TON2
400 IFD1$(A1)=D$(A2)THENGOSUB500:REM PRINT TO PRINTER/SCREEN
410 NEXTA2
420 NEXTA1
430 PRINT" DONE."
440 END
500 REM SEND TO PRINTER/DISK/BOTH
510 IFPR=1THEN550
520 OPEN4,4:PRINT#4,D1$(A1);"...";D$(A2):CLOSE4
530 IFPR=3THEN550
540 RETURN
550 REM PRINT TO DISK FILE
560 OPEN15,8,15
570 OPEN2,8,2,"DUPLICATES,S,R"
580 CLOSE2:INPUT#15,A,B$,C,D
590 IFA<>0THENOPEN2,8,2,"DUPLICATES,S,W":CLOSE2
600 OPEN2,8,2,"DUPLICATES,S,A"
610 PRINT#2,D1$(A1);"...";D$(A1)
620 CLOSE2
630 INPUT#15,A,B$,C,D
635 CLOSE15
640 IFA=0THENRETURN
650 PRINT"[147] DISK ERROR:"
660 PRINT"ERROR #";A
670 PRINT"DESCRIPTION: ";B$
680 PRINT"TRACK #";C;" SECTOR #;"D
690 END
800 REM DIRECTORY READ
810 PRINT"[147] READING DIRECTORY:"
820 X=0:XX=0
830 OPEN1,DN,0,"$0"
840 GET#1,A$,B$
850 GET#1,A$,A$,A$,B$
860 IF ST<>0 THEN 1060
870 C=0:P$="":P1$=""
880 IF A$<>"" THEN C=ASC(A$)
890 IF B$<>"" THEN C=C+ASC(B$)*256
900 P$="("+MID$(STR$(C),2)+","
910 GET#1,B$:IF ST<>0 THEN 1060
920 IF B$<>CHR$(34) THEN 910
930 GET#1,B$:IFB$<>CHR$(34)THENP1$=P1$+B$:GOTO930
940 GET#1,B$:IFB$=CHR$(32)THEN940
950 C$=""
960 C$=C$+B$:GET#1,B$:IF B$<>"" THEN 960
970 L=3:IFLEFT$(C$,1)="*"THENL=4
980 P$=P$+LEFT$(C$,L)+")"
990 PD$=LEFT$(C$,L)
1000 IFX=0THEND$(D)=P1$:GOTO1020
1010 D$(X)=P1$:D(X)=VAL(MID$(P$,2,3))
1020 PRINT"[158]";D(X):PRINT"[145][144]";D$(X)
1030 X=X+1:IFX>144THEN1070
1040 IFXX=0THEN850
1050 IFXX=1THEN1090
1060 A=LEN(P$):BF=VAL(MID$(P$,2)):P$=LEFT$(P$,A-1)+")"
1070 D$(X)="BLOCKS FREE="+P$
1080 PRINT"[158]";D(X):PRINT"[145][144]";D$(X)
1090 CLOSE1
1100 IFX=1THENCD$="":RETURN
1110 CF=0:FI=X:D$(0)=""+D$(0)+"[146]"
1120 RETURN
1130 REM INPUT ROUTINE
1140 CL=LEN(I$)
1150 B$="":FORF=1TOL:PRINT"-";:B$=B$+"[157]":NEXTF:PRINTB$;I$;
1160 IFCL<>LTHENPOKE204,0
1170 GET A$:IFA$=""THEN1170
1180 POKE204,1:IFCL<>LTHENPRINT"-[157]";
1190 A=ASC(A$):IFA=34THENPRINTCHR$(34);:POKE212,0:GOTO1250
1200 IFA=20THEN1270
1210 IFA=13THENRETURN
1220 IFA<32ORA>90THEN1160
1230 IFCL>=LTHEN1160
1240 PRINTA$;
1250 I$=I$+A$:CL=LEN(I$)
1260 GOTO1160
1270 IFCL=0THEN1160
1280 I$=LEFT$(I$,CL-1)
1290 CL=LEN(I$):PRINT"[157]-[157]";
1300 GOTO1160